자료구조 알고리즘(C) 도수 정렬(Counting sort) 도수 정렬 특징 범위 조건이 있는 경우에 한해서 굉장히 빠름 도수 정렬 단계 a를 스캔하며 해당 값을 찾으면 f의 인덱스에 위치한 값에 1씩 증가시킴 코드 배열 a의 값의 범위가 0 이상 max 이하일때(그림에서는 max를 10이라 가정), 배열 f를 누적된 값이 몇개 있는지 나타내게 만들어준다. 그러면 배열 a의 값들이 몇 번째에 위치하는지 알수 있다. 코드 3. 목적 배열 만들기 이미 배... 자료구조 알고리즘(C)자료구조 알고리즘(C) 덱(Deque)에 대해서 덱을 구현하는 프로그램 덱을 구현하는 프로그램을 구현해봅시다. 덱은 큐와 유사하며 양방향으로 enque와 deque가 할수 있습니다. 아래의 덱을 구현하는 프로그램은 링크의 큐을 구현하는 프로그램에서 덱으로 활용한 것입니다. 아래는 IntDequeue.h 소스파일입니다. 아래는 IntDequeue.c 소스파일입니다. 구조체는 큐와 동일하고 큐에서 구현한 프로그램 Enque와 Deque에서 E... 자료구조 알고리즘(C)자료구조 알고리즘(C) bsearch 함수 구현 이 링크는 이진검색의 자세한 검색과정이 있습니다. 검색과정을 이해하고 이 글을 봐주셔야 이해가 수월합니다. bsearch 함수와 같은 형식으로 호출할 수 있는 함수를 구현해봅시다. 아래의 binsearch 함수는 bsearch와 동일한 함수입니다. 자료형은 정수, 문자, 문자열, 구조체등 모두 사용할 수 있습니다. 그치만 대소 관계를 판단하는 방법은 요소의 자료형마다 다릅니다. 그러므로 두 ... 자료구조 알고리즘(C)자료구조 알고리즘(C) Kmp 문자열 탐색 문자열 탐색 비교 kmp(Knuth-Morris-Pratt) 알고리즘은 문자열 탐색시 불필요한 탐색과정을 없애주는 알고리즘이다. 문자열과 검색할 문자열의 겹치는 부분을 찾아 검사를 시작할 위치를 구한다. 반면에, kmp 알고리즘은 2번 과정에서 txt(text)의 ABCABC와 pat(patter의 pat)의 ABCABD에서 C와 D가 불일치 이후 3번 과정을 보자. 2번 과정에서 txt에서... 자료구조 알고리즘(C)자료구조 알고리즘(C) 셸 정렬(Shell Sort) 단순 삽입 정렬의 장점은 살리고 단점은 보완하여 좀 더 빠르게 정렬하는 알고리즘 삽입 정렬의 장점 정렬을 마쳤거나 정렬을 마친 상태에 가까우면 정렬 속도가 매우 빠름(이동 회수 줄임) 삽입 정렬의 단점 삽입 정렬은 입력되는 초기 리스트가 "거의 정렬"되어 있을 경우 효율적 삽입 정렬은 한 번에 한 요소의 위치만 결정되기 때문에 비효율적 셸 정렬의 보완책 삽입할 위치가 멀리 떨어져 있으면 이동... 자료구조 알고리즘(C)자료구조 알고리즘(C)
도수 정렬(Counting sort) 도수 정렬 특징 범위 조건이 있는 경우에 한해서 굉장히 빠름 도수 정렬 단계 a를 스캔하며 해당 값을 찾으면 f의 인덱스에 위치한 값에 1씩 증가시킴 코드 배열 a의 값의 범위가 0 이상 max 이하일때(그림에서는 max를 10이라 가정), 배열 f를 누적된 값이 몇개 있는지 나타내게 만들어준다. 그러면 배열 a의 값들이 몇 번째에 위치하는지 알수 있다. 코드 3. 목적 배열 만들기 이미 배... 자료구조 알고리즘(C)자료구조 알고리즘(C) 덱(Deque)에 대해서 덱을 구현하는 프로그램 덱을 구현하는 프로그램을 구현해봅시다. 덱은 큐와 유사하며 양방향으로 enque와 deque가 할수 있습니다. 아래의 덱을 구현하는 프로그램은 링크의 큐을 구현하는 프로그램에서 덱으로 활용한 것입니다. 아래는 IntDequeue.h 소스파일입니다. 아래는 IntDequeue.c 소스파일입니다. 구조체는 큐와 동일하고 큐에서 구현한 프로그램 Enque와 Deque에서 E... 자료구조 알고리즘(C)자료구조 알고리즘(C) bsearch 함수 구현 이 링크는 이진검색의 자세한 검색과정이 있습니다. 검색과정을 이해하고 이 글을 봐주셔야 이해가 수월합니다. bsearch 함수와 같은 형식으로 호출할 수 있는 함수를 구현해봅시다. 아래의 binsearch 함수는 bsearch와 동일한 함수입니다. 자료형은 정수, 문자, 문자열, 구조체등 모두 사용할 수 있습니다. 그치만 대소 관계를 판단하는 방법은 요소의 자료형마다 다릅니다. 그러므로 두 ... 자료구조 알고리즘(C)자료구조 알고리즘(C) Kmp 문자열 탐색 문자열 탐색 비교 kmp(Knuth-Morris-Pratt) 알고리즘은 문자열 탐색시 불필요한 탐색과정을 없애주는 알고리즘이다. 문자열과 검색할 문자열의 겹치는 부분을 찾아 검사를 시작할 위치를 구한다. 반면에, kmp 알고리즘은 2번 과정에서 txt(text)의 ABCABC와 pat(patter의 pat)의 ABCABD에서 C와 D가 불일치 이후 3번 과정을 보자. 2번 과정에서 txt에서... 자료구조 알고리즘(C)자료구조 알고리즘(C) 셸 정렬(Shell Sort) 단순 삽입 정렬의 장점은 살리고 단점은 보완하여 좀 더 빠르게 정렬하는 알고리즘 삽입 정렬의 장점 정렬을 마쳤거나 정렬을 마친 상태에 가까우면 정렬 속도가 매우 빠름(이동 회수 줄임) 삽입 정렬의 단점 삽입 정렬은 입력되는 초기 리스트가 "거의 정렬"되어 있을 경우 효율적 삽입 정렬은 한 번에 한 요소의 위치만 결정되기 때문에 비효율적 셸 정렬의 보완책 삽입할 위치가 멀리 떨어져 있으면 이동... 자료구조 알고리즘(C)자료구조 알고리즘(C)